﻿using System;
using System.Collections.Generic;
using System.ServiceModel;
using IssueVision.EntityModel;

namespace IssueVision.Service
{
    [ServiceContract(Namespace = "IIssueVisionService")]
    public interface IIssueVisionService
    {
        [OperationContract]
        List<IssueType> GetIssueTypes();

        [OperationContract]
        List<Platform> GetPlatforms();

        [OperationContract]
        List<Resolution> GetResolutions();

        [OperationContract]
        List<SecurityQuestion> GetSecurityQuestions();

        [OperationContract]
        List<Status> GetStatuses();

        [OperationContract]
        List<SubStatus> GetSubStatuses();

        [OperationContract]
        List<User> GetUsers();

        [OperationContract]
        User GetCurrentUser();

        [OperationContract]
        Boolean GetCurrentUserProfileReset();
        
        [OperationContract]
        List<Issue> GetAllIssues();

        [OperationContract]
        List<Issue> GetMyIssues();

        [OperationContract]
        List<Issue> GetAllUnResolvedIssues();

        [OperationContract]
        List<string> GetActiveBugCountByMonth(int numberOfMonth);

        [OperationContract]
        List<string> GetResolvedBugCountByMonth(int numberOfMonth);

        [OperationContract]
        List<string> GetActiveBugCountByPriority();

        [OperationContract]
        List<IssueHistory> GetIssueHistoryByIssueID(long issueID);

        [OperationContract]
        List<object> UpdateIssue(Issue issue);

        [OperationContract]
        string UpdateUser(User user);
    }
}
